/**
 * 时间格式化  当前时区,常用特定格式
 * @param mix Date|string|int|null 时间 对象,字符串,时间戳(秒)
 * 		字符串格式的数字:以时间戳(秒)处理  null:取当前时间
 * 		非数字字符串: 所有字符'-'内部替换为'/'再处理(兼容)
 * 		字符串格式为: "2020/1/01 01:1"  末尾自动追加":00"
 * 		字符串格式为: "2020/01/1"  末尾自动追加" 00:00:00"
 * @param fmt string 返回格式(异常取:s)  o:Date实例,
 * 		s:"Y-M-D H:I:S", i:"Y-M-D H:I",  d:"Y-M-D"
 * 		u:时间戳(毫秒), t:时间戳(秒,四舍五入)
 * @return string|int|Date|null  null:异常
 * 		注意: mix=0为有效, 可:$.date(mix*1||'')??'...'
 */
$.date = function(mix=null, fmt='s'){
	if(mix===null) mix=new Date(); else if(!(mix instanceof Date)){
		let x = mix*1;
		if(mix!=='' && x===x) mix = new Date(x*1000);
		else{
			mix = (mix+'').replace(/-/g,'/');
			if(/^\d{4}\/\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2}$/.test(mix)) mix+=':00';
			else if(/^\d{4}\/\d{1,2}\/\d{1,2}$/.test(mix)) mix += ' 00:00:00';
			mix = new Date(mix);
		}
	}
	if(mix.toString()==='Invalid Date') return null;  if(fmt==='o') return mix;
	if(fmt==='u') return mix*1;  if(fmt==='t') return Math.round(mix*1/1000);
	let R=mix.getFullYear()+'-'+$.pad(mix.getMonth()+1)+'-'+$.pad(mix.getDate());
	if(fmt==='d') return R;  R+=' '+$.pad(mix.getHours())+':';
	R+=$.pad(mix.getMinutes()); return fmt==='i'?R:R+':'+$.pad(mix.getSeconds());
};
